//
//  43.左旋转字符串.swift
//  数据结构与算法
//
//  Created by ZERO on 2021/5/27.
//

import Foundation
/*
 题目：汇编语言中有一种移位指令叫做循环左移（ROL），现在有个简单的任务，就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S，请你把其循环左移K位后的序列输出。例如，字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果，即“XYZdefabc”。是不是很简单？OK，搞定它！
 思路：
 */
func offer_43() {
    print(Solution().leftRotateString("abcXYZdef",3))
}

fileprivate class Solution {
    func leftRotateString(_ str: String, _ n: Int) -> String {
        let n = n > str.count ? n%str.count : n
        var result = ""
        for index in n..<str.count {
            result.append(str[str.index(str.startIndex, offsetBy: index)])
        }
        for index in 0..<n {
            result.append(str[str.index(str.startIndex, offsetBy: index)])
        }
        return result
    }
}
